<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="coinfaces">

        <title>模板语言参考</title>

    <link rel="stylesheet" href="../../../theme/css/style.css">
    <link rel="stylesheet" href="../../../theme/css/pygments.css">



</head>

<body>
    <div class="content">
<h1>模板语言参考</h1>
    <p>模板语言是通过利用“替换”、“过滤”和“重利用”来减少内容生成中的重复工作的技术。</p>
<div class="section" id="id2">
<h2>变量替换</h2>
<div class="section" id="mustache-js">
<h3>mustache.js</h3>
<p><tt class="docutils literal">{{ name }}</tt> -&gt; 经过HTML转义的文本</p>
<p><tt class="docutils literal">{{{ name }}}</tt> 或 <tt class="docutils literal">{{&amp; name }}</tt> -&gt; 未经过HTML转义的文本</p>
<p><tt class="docutils literal">name</tt> 可以是变量也可以是函数，如果是函数，则执行并取其返回值</p>
</div>
</div>
<div class="section" id="id3">
<h2>块替换</h2>
<p>一般叫block，mustache里称为section，其功能定位也不同于其它模板语言。</p>
<div class="section" id="id4">
<h3>mustache.js</h3>
<pre class="literal-block">
{{# name }}
...
{{/ name }}
</pre>
<p>包含了以下功能：</p>
<ul>
<li><p class="first">条件替换，如果 <tt class="docutils literal">name</tt> 是假值或空数组，不显示块的内容</p>
</li>
<li><p class="first">循环，如果 <tt class="docutils literal">name</tt> 是非空数组，其每个成员都产生一个同样结构的替换块</p>
</li>
<li><p class="first">过滤，如果 <tt class="docutils literal">name</tt> 是函数，会过滤块中的内容</p>
</li>
<li><p class="first">如果 <tt class="docutils literal">name</tt> 是对象，提供子上下文，在 <tt class="docutils literal">name</tt> 是数组的情况下，数组中的每个对象成员也会成为这次循环的子上下文。</p>
<p>上下文是一种名空间，mustache在上下文里查找一个名字对应的内容，如果找不到，则到父上下文里查找，最多回溯到根上下文。</p>
</li>
</ul>
<pre class="literal-block">
{{^ name }}
...
{{/ name }}
</pre>
<p>作为上述条件替换的补充，仅当 <tt class="docutils literal">name</tt> 是假值或空数组时，显示块的内容。</p>
</div>
</div>
<div class="section" id="id5">
<h2>子模板</h2>
<div class="section" id="id6">
<h3>mustache.js</h3>
<p><tt class="docutils literal">{{&gt; name }}</tt> -&gt; 插入 <tt class="docutils literal">name</tt> 代表的模板对象在当前上下文中实例化的结果。</p>
<p>mustache 非常节省，跨模板的引用必须通过程序解决，因此也不能提供继承功能（无法确定被继承的模板在哪里）。</p>
</div>
</div>
<div class="section" id="id7">
<h2>其它</h2>
<div class="section" id="id8">
<h3>mustache.js</h3>
<p><tt class="docutils literal">{{! ... }}</tt> -&gt; 注释</p>
<p><tt class="docutils literal"><span class="pre">{{=xx</span> <span class="pre">yy=}}</span></tt> -&gt; 将左右分隔符分别替换为 <tt class="docutils literal">xx</tt> 和 <tt class="docutils literal">yy</tt></p>
</div>
</div>

    </div>
<nav class="nav sidebar">
    <div class="siteinfo">
        <div class="sitename"><a href="../../..">coinfaces</a></div>
        <div class="tagline">Another Side of Life</div>
    </div>

            <a href="../../../pages/doc/">&larr; 文档</a>

</nav><footer class="footer">
    <span>
        &copy; jpli &middot;
        under <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a>
    </span>
    |
    <span>
        Powered by:
        <a href="http://blog.getpelican.com/">Pelican</a>
    </span>
</footer></body>
</html>